home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / pascal2 / pro15 / buffers.tpu < prev    next >
Pascal Compiled Unit  |  1989-12-09  |  10.4 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was processed as: Pascal Compiled Unit (other/pascalCompiledUnit).
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
1% dexvert Pascal Compiled Unit (other/pascalCompiledUnit) magic Unsupported
100% file data default
72% TrID Borland Turbo Pascal 5.5 compiled Unit default
27% TrID Borland Turbo Pascal compiled Unit (generic) default
100% gt2 Turbo Pascal 5.5 Unit default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 54 50 55 36 00 00 00 00 | c2 00 40 00 bd 10 3d 11 |TPU6....|..@...=.|
|00000010| 35 12 45 12 45 12 60 12 | 73 12 fa 14 5c 11 10 00 |5.E.E.`.|s...\...|
|00000020| 40 03 10 00 00 00 84 08 | 00 00 00 00 00 00 00 00 |@.......|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 7e 00 00 00 00 00 00 00 | a2 02 f6 00 00 00 c2 00 |~.......|........|
|00000050| 00 00 00 00 00 00 07 01 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| a7 01 9b 04 00 00 73 03 | 00 00 00 00 00 00 00 00 |......s.|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000080| d5 00 00 00 00 00 00 00 | e7 00 00 00 00 00 00 00 |........|........|
|00000090| 8e 01 73 01 00 00 00 00 | bf 02 00 00 00 00 00 00 |..s.....|........|
|000000a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 47 01 00 00 |........|....G...|
|000000b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000c0| 00 00 00 00 59 07 42 55 | 46 46 45 52 53 00 00 88 |....Y.BU|FFERS...|
|000000d0| 96 d5 00 f6 00 00 00 59 | 06 53 59 53 54 45 4d 00 |.......Y|.SYSTEM.|
|000000e0| 00 61 e9 e7 00 00 00 00 | 00 59 03 44 4f 53 00 00 |.a......|.Y.DOS..|
|000000f0| f1 0e f6 00 d5 00 00 00 | 59 05 54 50 45 4d 53 00 |........|Y.TPEMS.|
|00000100| 00 b1 08 00 00 e7 00 00 | 00 51 06 50 54 52 52 45 |........|.Q.PTRRE|
|00000110| 43 15 01 cd 00 02 00 04 | 00 1d 01 27 01 06 00 37 |C.......|...'...7|
|00000120| 01 27 01 00 00 00 00 00 | 00 52 03 4f 46 53 08 00 |.'......|.R.OFS..|
|00000130| 00 37 01 d6 00 df 00 00 | 00 52 03 53 45 47 08 02 |.7......|.R.SEG..|
|00000140| 00 00 00 d6 00 df 00 00 | 00 51 08 42 49 47 42 4c |........|.Q.BIGBL|
|00000150| 4f 43 4b 67 01 cd 00 0c | 00 01 00 00 00 00 00 01 |OCKg....|........|
|00000160| 00 00 00 e6 00 df 00 01 | 00 02 00 b6 00 df 00 57 |........|.......W|
|00000170| 01 cd 00 00 00 51 0b 42 | 49 47 42 4c 4f 43 4b 50 |.....Q.B|IGBLOCKP|
|00000180| 54 52 86 01 cd 00 08 0d | 04 00 67 01 cd 00 00 00 |TR......|..g.....|
|00000190| 51 09 42 55 46 46 45 52 | 50 54 52 9f 01 cd 00 08 |Q.BUFFER|PTR.....|
|000001a0| 0d 04 00 b9 01 cd 00 00 | 00 51 0a 02 55 46 46 45 |........|.Q..UFFE|
|000001b0| 52 44 45 53 43 b9 01 cd | 00 03 00 0f 00 cd 01 d7 |RDESC...|........|
|000001c0| 01 00 00 00 00 08 00 00 | 00 0d 00 a7 01 06 00 38 |........|.......8|
|000001d0| 02 00 00 85 02 5f 02 00 | 00 52 0a 42 55 46 46 45 |....._..|.R.BUFFE|
|000001e0| 52 41 44 44 52 08 00 00 | ee 01 86 01 cd 00 00 00 |RADDR...|........|
|000001f0| 52 09 45 4d 53 48 41 4e | 44 4c 45 08 04 00 04 02 |R.EMSHAN|DLE.....|
|00000200| d6 00 df 00 d7 01 52 05 | 49 4e 45 4d 53 08 06 00 |......R.|INEMS...|
|00000210| 16 02 fe 00 df 00 04 02 | 52 04 53 49 5a 45 08 07 |........|R.SIZE..|
|00000220| 00 27 02 d6 00 df 00 16 | 02 52 04 4e 45 58 54 08 |.'......|.R.NEXT.|
|00000230| 09 00 38 02 7e 00 df 00 | ee 01 53 04 49 4e 75 62 |..8.~...|..S.INub|
|00000240| 6c 69 63 20 64 6f 6d 61 | 69 6e 2e 20 20 20 20 20 |lic doma|in. |
|00000250| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2a 2a | | ***|
|00000260| 2a 7d 0d 0a 7b 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |*}..{***|********|
|00000270| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000280| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000290| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 7d 0d 0a 0d 0a 55 |********|**}....U|
|000002b0| 73 65 73 20 44 6f 73 2c | 20 54 70 45 6d 73 3b 0d |ses Dos,| TpEms;.|
|000002c0| 0a 0d 0a 54 79 70 65 0d | 0a 20 20 50 74 72 52 65 |...Type.|. PtrRe|
|000002d0| 63 20 3d 20 52 65 63 6f | 72 64 0d 0a 20 20 20 20 |c = Reco|rd.. |
|000002e0| 4f 66 73 2c 20 53 65 67 | 20 3a 20 57 6f 72 64 3b |Ofs, Seg| : Word;|
|000002f0| 0d 0a 20 20 65 6e 64 3b | 0d 0a 0d 0a 20 20 42 69 |.. end;|.... Bi|
|00000300| 67 42 6c 6f 63 6b 20 3d | 20 41 72 72 61 79 5b 30 |gBlock =| Array[0|
|00000310| 2e 2e 31 5d 20 4f 66 20 | 42 79 74 65 3b 0d 0a 20 |..1] Of |Byte;.. |
|00000320| 20 42 69 67 42 6c 6f 63 | 6b 50 74 72 20 3d 20 5e | BigBloc|kPtr = ^|
|00000330| 42 69 67 42 6c 6f 63 6b | 3b 0d 0a 20 20 42 75 66 |BigBlock|;.. Buf|
|00000340| 66 65 72 50 74 72 20 3d | 20 5e 42 75 66 66 65 72 |ferPtr =| ^Buffer|
|00000350| 44 65 73 63 3b 0d 0a 20 | 20 42 75 66 66 65 72 44 |Desc;.. | BufferD|
|00000360| 65 73 63 20 3d 20 6f 62 | 6a 65 63 74 0d 0a 20 20 |esc = ob|ject.. |
|00000370| 20 20 42 75 66 66 65 72 | 41 64 64 72 20 3a 20 42 | Buffer|Addr : B|
|00000380| 69 67 42 6c 6f 63 6b 50 | 74 72 3b 0d 0a 20 20 20 |igBlockP|tr;.. |
|00000390| 20 45 6d 73 48 61 6e 64 | 6c 65 20 20 3a 20 57 6f | EmsHand|le : Wo|
|000003a0| 72 64 3b 0d 0a 20 20 20 | 20 49 6e 45 6d 73 20 20 |rd;.. | InEms |
|000003b0| 20 20 20 20 3a 20 42 6f | 6f 6c 65 61 6e 3b 0d 0a | : Bo|olean;..|
|000003c0| 20 20 20 20 53 69 7a 65 | 20 20 20 20 20 20 20 3a | Size| :|
|000003d0| 20 57 6f 72 64 3b 0d 0a | 20 20 20 20 4e 65 78 74 | Word;..| Next|
|000003e0| 20 20 20 20 20 20 20 3a | 20 50 6f 69 6e 74 65 72 | :| Pointer|
|000003f0| 3b 0d 0a 20 20 20 20 43 | 6f 6e 73 74 72 75 63 74 |;.. C|onstruct|
|00000400| 6f 72 20 49 6e 69 74 28 | 42 75 66 66 65 72 53 69 |or Init(|BufferSi|
|00000410| 7a 65 20 3a 20 57 6f 72 | 64 3b 20 55 73 65 45 6d |ze : Wor|d; UseEm|
|00000420| 73 20 3a 20 42 6f 6f 6c | 65 61 6e 29 3b 0d 0a 20 |s : Bool|ean);.. |
|00000430| 20 20 20 46 75 6e 63 74 | 69 6f 6e 20 20 20 20 4d | Funct|ion M|
|00000440| 61 70 28 4f 66 66 73 65 | 74 2c 20 4c 65 6e 67 74 |ap(Offse|t, Lengt|
|00000450| 68 20 3a 20 57 6f 72 64 | 29 20 3a 20 42 69 67 42 |h : Word|) : BigB|
|00000460| 6c 6f 63 6b 50 74 72 3b | 20 56 69 72 74 75 61 6c |lockPtr;| Virtual|
|00000470| 3b 0d 0a 20 20 20 20 44 | 65 73 74 72 75 63 74 6f |;.. D|estructo|
|00000480| 72 20 20 44 6f 6e 65 3b | 0d 0a 20 20 65 6e 64 3b |r Done;|.. end;|
|00000490| 0d 0a 0d 0a 20 20 46 69 | 6c 65 42 75 66 66 65 72 |.... Fi|leBuffer|
|000004a0| 50 74 72 20 3d 20 5e 46 | 69 6c 65 42 75 66 66 65 |Ptr = ^F|ileBuffe|
|000004b0| 72 44 65 73 63 3b 0d 0a | 20 20 46 69 6c 65 42 75 |rDesc;..| FileBu|
|000004c0| 66 66 65 72 44 65 73 63 | 20 3d 20 4f 62 6a 65 63 |fferDesc| = Objec|
|000004d0| 74 28 42 75 66 66 65 72 | 44 65 73 63 29 0d 0a 20 |t(Buffer|Desc).. |
|000004e0| 20 20 20 50 6f 73 42 75 | 66 66 65 72 20 20 20 3a | PosBu|ffer :|
|000004f0| 20 4c 6f 6e 67 49 6e 74 | 3b 0d 0a 20 20 20 20 42 | LongInt|;.. B|
|00000500| 79 74 65 73 55 73 65 64 | 20 20 20 3a 20 57 6f 72 |ytesUsed| : Wor|
|00000510| 64 3b 0d 0a 20 20 20 20 | 49 6e 69 74 69 61 6c 69 |d;.. |Initiali|
|00000520| 7a 65 64 20 3a 20 42 6f | 6f 6c 65 61 6e 3b 0d 0a |zed : Bo|olean;..|
|00000530| 20 20 20 20 4d 6f 64 69 | 66 69 65 64 20 20 20 20 | Modi|fied |
|00000540| 3a 20 42 6f 6f 6c 65 61 | 6e 3b 0d 0a 20 20 20 20 |: Boolea|n;.. |
|00000550| 43 6f 6e 73 74 72 75 63 | 74 6f 72 20 49 6e 69 74 |Construc|tor Init|
|00000560| 28 42 75 66 66 65 72 53 | 69 7a 65 20 3a 20 57 6f |(BufferS|ize : Wo|
|00000570| 72 64 3b 20 55 73 65 45 | 6d 73 20 3a 20 42 6f 6f |rd; UseE|ms : Boo|
|00000580| 6c 65 61 6e 29 3b 0d 0a | 20 20 65 6e 64 3b 0d 0a |lean);..| end;..|
|00000590| 0d 0a 20 20 42 75 66 66 | 65 72 43 68 61 69 6e 20 |.. Buff|erChain |
|000005a0| 3d 20 6f 62 6a 65 63 74 | 0d 0a 20 20 20 20 4e 75 |= object|.. Nu|
|000005b0| 6d 62 65 72 4f 66 42 75 | 66 66 65 72 73 2c 20 42 |mberOfBu|ffers, B|
|000005c0| 6c 6f 63 6b 53 69 7a 65 | 3a 57 6f 72 64 3b 0d 0a |lockSize|:Word;..|
|000005d0| 20 20 20 20 42 75 66 66 | 65 72 48 65 61 64 2c 20 | Buff|erHead, |
|000005e0| 42 75 66 66 65 72 54 61 | 69 6c 20 3a 20 46 69 6c |BufferTa|il : Fil|
|000005f0| 65 42 75 66 66 65 72 50 | 74 72 3b 0d 0a 20 20 20 |eBufferP|tr;.. |
|00000600| 20 50 72 6f 63 65 64 75 | 72 65 20 49 6e 69 74 28 | Procedu|re Init(|
|00000610| 42 75 66 53 69 7a 65 2c | 20 42 75 66 4e 75 6d 20 |BufSize,| BufNum |
|00000620| 3a 20 57 6f 72 64 3b 20 | 55 73 65 45 6d 73 20 3a |: Word; |UseEms :|
|00000630| 20 42 6f 6f 6c 65 61 6e | 29 3b 0d 0a 20 20 20 20 | Boolean|);.. |
|00000640| 50 72 6f 63 65 64 75 72 | 65 20 43 68 61 69 6e 41 |Procedur|e ChainA|
|00000650| 74 45 6e 64 28 56 41 52 | 20 42 20 3a 20 46 69 6c |tEnd(VAR| B : Fil|
|00000660| 65 42 75 66 66 65 72 50 | 74 72 29 3b 0d 0a 20 20 |eBufferP|tr);.. |
|00000670| 20 20 46 75 6e 63 74 69 | 6f 6e 20 20 42 75 66 66 | Functi|on Buff|
|00000680| 65 72 73 55 6e 55 73 65 | 64 3a 57 6f 72 64 3b 0d |ersUnUse|d:Word;.|
|00000690| 0a 20 20 20 20 50 72 6f | 63 65 64 75 72 65 20 44 |. Pro|cedure D|
|000006a0| 6f 6e 65 3b 0d 0a 20 20 | 65 6e 64 3b 0d 0a 0d 0a |one;.. |end;....|
|000006b0| 20 20 42 75 66 66 65 72 | 46 69 6c 65 3d 4f 62 6a | Buffer|File=Obj|
|000006c0| 65 63 74 0d 0a 20 20 20 | 20 46 20 20 20 20 20 20 |ect.. | F |
|000006d0| 20 20 20 20 20 20 20 20 | 3a 20 46 69 6c 65 3b 0d | |: File;.|
|000006e0| 0a 20 20 20 20 46 53 69 | 7a 65 20 20 20 20 20 20 |. FSi|ze |
|000006f0| 20 20 20 20 3a 20 4c 6f | 6e 67 49 6e 74 3b 0d 0a | : Lo|ngInt;..|
|00000700| 20 20 20 20 43 75 72 72 | 65 6e 74 50 6f 73 20 20 | Curr|entPos |
|00000710| 20 20 20 3a 20 4c 6f 6e | 67 49 6e 74 3b 0d 0a 20 | : Lon|gInt;.. |
|00000720| 20 20 20 52 65 63 6f 72 | 64 53 69 7a 65 20 20 20 | Recor|dSize |
|00000730| 20 20 3a 20 57 6f 72 64 | 3b 0d 0a 20 20 20 20 42 | : Word|;.. B|
|00000740| 6c 6f 63 6b 53 69 7a 65 | 20 20 20 20 20 20 3a 20 |lockSize| : |
|00000750| 57 6f 72 64 3b 0d 0a 20 | 20 20 20 42 75 66 66 65 |Word;.. | Buffe|
|00000760| 72 53 20 20 20 20 20 20 | 20 20 3a 20 42 75 66 66 |rS | : Buff|
|00000770| 65 72 43 68 61 69 6e 3b | 0d 0a 20 20 20 20 46 6c |erChain;|.. Fl|
|00000780| 75 73 68 41 6c 6c 20 20 | 20 20 20 20 20 3a 20 42 |ushAll | : B|
|00000790| 6f 6f 6c 65 61 6e 3b 0d | 0a 20 20 20 20 52 65 61 |oolean;.|. Rea|
|000007a0| 64 41 6c 6c 20 20 20 20 | 20 20 20 20 3a 20 42 6f |dAll | : Bo|
|000007b0| 6f 6c 65 61 6e 3b 0d 0a | 20 20 20 20 4e 6f 42 75 |olean;..| NoBu|
|000007c0| 66 66 65 72 52 65 61 64 | 73 20 20 3a 20 42 6f 6f |fferRead|s : Boo|
|000007d0| 6c 65 61 6e 3b 0d 0a 20 | 20 20 20 4e 6f 42 75 66 |lean;.. | NoBuf|
|000007e0| 66 65 72 57 72 69 74 65 | 73 20 3a 20 42 6f 6f 6c |ferWrite|s : Bool|
|000007f0| 65 61 6e 3b 0d 0a 20 20 | 20 20 4e 6f 42 75 66 66 |ean;.. | NoBuff|
|00000800| 65 72 49 6e 67 20 20 20 | 20 3a 20 42 6f 6f 6c 65 |erIng | : Boole|
|00000810| 61 6e 3b 0d 0a 0d 0a 20 | 20 20 20 50 72 6f 63 65 |an;.... | Proce|
|00000820| 64 75 72 65 20 49 6e 69 | 74 28 42 75 66 53 69 7a |dure Ini|t(BufSiz|
|00000830| 65 2c 20 42 75 66 4e 75 | 6d 3a 57 6f 72 64 3b 20 |e, BufNu|m:Word; |
|00000840| 55 73 65 45 6d 73 20 3a | 20 42 6f 6f 6c 65 61 6e |UseEms :| Boolean|
|00000850| 29 3b 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.. | |
|00000860| 20 20 7b 49 6e 69 74 69 | 61 6c 69 7a 65 20 42 75 | {Initi|alize Bu|
|00000870| 66 4e 75 6d 20 62 75 66 | 66 65 72 73 20 66 6f 72 |fNum buf|fers for|
|00000880| 20 74 68 65 20 66 69 6c | 65 2c 20 65 61 63 68 20 | the fil|e, each |
|00000890| 62 65 69 6e 67 0d 0a 20 | 20 20 20 20 20 20 20 20 |being.. | |
|000008a0| 20 20 20 20 20 20 42 75 | 66 73 69 7a 65 20 62 79 | Bu|fsize by|
|000008b0| 74 65 73 20 62 69 67 20 | 2d 20 75 73 65 20 45 78 |tes big |- use Ex|
|000008c0| 70 61 6e 64 65 64 20 6d | 65 6d 6f 72 79 20 69 66 |panded m|emory if|
|000008d0| 20 55 73 65 45 6d 73 20 | 69 73 20 54 52 55 45 7d | UseEms |is TRUE}|
|000008e0| 0d 0a 0d 0a 20 20 20 20 | 50 72 6f 63 65 64 75 72 |.... |Procedur|
|000008f0| 65 20 46 6c 75 73 68 3b | 0d 0a 20 20 20 20 20 20 |e Flush;|.. |
|00000900| 20 20 20 20 20 20 20 20 | 7b 57 72 69 74 65 20 61 | |{Write a|
|00000910| 6c 6c 20 6d 6f 64 69 66 | 69 65 64 20 62 75 66 66 |ll modif|ied buff|
|00000920| 65 72 73 20 74 6f 20 64 | 69 73 6b 20 2d 20 64 6f |ers to d|isk - do|
|00000930| 65 73 20 6e 6f 74 20 63 | 61 75 73 65 20 44 4f 53 |es not c|ause DOS|
|00000940| 20 74 6f 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 | to.. | |
|00000950| 20 20 20 20 66 6c 75 73 | 68 20 69 74 73 20 62 75 | flus|h its bu|
|00000960| 66 66 65 72 73 7d 0d 0a | 0d 0a 20 20 20 20 46 75 |ffers}..|.. Fu|
|00000970| 6e 63 74 69 6f 6e 20 20 | 46 72 65 65 42 75 66 66 |nction |FreeBuff|
|00000980| 65 72 20 3a 20 46 69 6c | 65 42 75 66 66 65 72 50 |er : Fil|eBufferP|
|00000990| 74 72 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |tr;.. | |
|000009a0| 20 20 20 7b 46 69 6e 64 | 20 61 6e 20 61 76 61 69 | {Find| an avai|
|000009b0| 6c 61 62 6c 65 20 42 75 | 66 66 65 72 20 2d 20 46 |lable Bu|ffer - F|
|000009c0| 6c 75 73 68 20 61 20 62 | 75 66 66 65 72 20 69 66 |lush a b|uffer if|
|000009d0| 20 6e 65 63 65 73 73 61 | 72 79 7d 0d 0a 0d 0a 20 | necessa|ry}.... |
|000009e0| 20 20 20 50 72 6f 63 65 | 64 75 72 65 20 52 65 61 | Proce|dure Rea|
|000009f0| 64 28 56 41 52 20 41 3b | 20 4e 75 6d 52 65 63 73 |d(VAR A;| NumRecs|
|00000a00| 20 3a 20 57 6f 72 64 29 | 3b 0d 0a 20 20 20 20 20 | : Word)|;.. |
|00000a10| 20 20 20 20 20 20 20 20 | 20 7b 52 65 61 64 20 61 | | {Read a|
|00000a20| 20 72 65 63 6f 72 64 20 | 62 75 66 66 65 72 65 64 | record |buffered|
|00000a30| 7d 0d 0a 0d 0a 20 20 20 | 20 50 72 6f 63 65 64 75 |}.... | Procedu|
|00000a40| 72 65 20 44 69 73 61 62 | 6c 65 4f 75 74 42 6f 75 |re Disab|leOutBou|
|00000a50| 6e 64 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |nd;.. | |
|00000a60| 20 20 20 7b 44 69 73 61 | 62 6c 65 20 62 75 66 66 | {Disa|ble buff|
|00000a70| 65 72 69 6e 67 20 77 68 | 65 6e 20 77 72 69 74 69 |ering wh|en writi|
|00000a80| 6e 67 20 74 6f 20 61 20 | 66 69 6c 65 7d 0d 0a 0d |ng to a |file}...|
|00000a90| 0a 20 20 20 20 50 72 6f | 63 65 64 75 72 65 20 57 |. Pro|cedure W|
|00000aa0| 72 69 74 65 28 56 41 52 | 20 41 3b 20 4e 75 6d 52 |rite(VAR| A; NumR|
|00000ab0| 65 63 73 20 3a 20 57 6f | 72 64 29 3b 0d 0a 20 20 |ecs : Wo|rd);.. |
|00000ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 7b 57 72 69 | | {Wri|
|00000ad0| 74 65 20 61 20 72 65 63 | 6f 72 64 20 62 75 66 66 |te a rec|ord buff|
|00000ae0| 65 72 65 64 7d 0d 0a 0d | 0a 20 20 20 20 46 75 6e |ered}...|. Fun|
|00000af0| 63 74 69 6f 6e 20 20 45 | 6f 66 3a 42 6f 6f 6c 65 |ction E|of:Boole|
|00000b00| 61 6e 3b 0d 0a 20 20 20 | 20 20 20 20 20 20 20 20 |an;.. | |
|00000b10| 20 20 20 7b 52 65 74 75 | 72 6e 20 74 72 75 65 20 | {Retu|rn true |
|00000b20| 69 66 20 74 68 65 20 63 | 75 72 72 65 6e 74 20 70 |if the c|urrent p|
|00000b30| 6f 73 69 74 69 6f 6e 20 | 69 6e 20 74 68 65 20 66 |osition |in the f|
|00000b40| 69 6c 65 20 69 73 20 61 | 74 20 69 74 73 20 65 6e |ile is a|t its en|
|00000b50| 64 7d 0d 0a 0d 0a 20 20 | 20 20 50 72 6f 63 65 64 |d}.... | Proced|
|00000b60| 75 72 65 20 53 65 65 6b | 28 4e 65 77 50 6f 73 20 |ure Seek|(NewPos |
|00000b70| 3a 20 4c 6f 6e 67 49 6e | 74 29 3b 0d 0a 20 20 20 |: LongIn|t);.. |
|00000b80| 20 20 20 20 20 20 20 20 | 20 20 20 7b 47 6f 20 74 | | {Go t|
|00000b90| 6f 20 61 20 6e 65 77 20 | 70 6f 73 69 74 69 6f 6e |o a new |position|
|00000ba0| 20 69 6e 20 74 68 65 20 | 66 69 6c 65 7d 0d 0a 0d | in the |file}...|
|00000bb0| 0a 20 20 20 20 46 75 6e | 63 74 69 6f 6e 20 20 46 |. Fun|ction F|
|00000bc0| 69 6c 65 53 69 7a 65 3a | 4c 6f 6e 67 49 6e 74 3b |ileSize:|LongInt;|
|00000bd0| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00000be0| 7b 52 65 74 75 72 6e 73 | 20 74 68 65 20 73 69 7a |{Returns| the siz|
|00000bf0| 65 20 6f 66 20 61 20 62 | 75 66 66 65 72 65 64 20 |e of a b|uffered |
|00000c00| 66 69 6c 65 20 74 61 6b | 69 6e 67 20 61 6e 79 20 |file tak|ing any |
|00000c10| 64 61 74 61 20 69 6e 20 | 74 68 65 0d 0a 20 20 20 |data in |the.. |
|00000c20| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 75 66 66 | | buff|
|00000c30| 65 72 73 20 69 6e 74 6f | 20 63 6f 6e 73 69 64 65 |ers into| conside|
|00000c40| 72 61 74 69 6f 6e 7d 0d | 0a 0d 0a 20 20 20 20 50 |ration}.|... P|
|00000c50| 72 6f 63 65 64 75 72 65 | 20 41 73 73 69 67 6e 28 |rocedure| Assign(|
|00000c60| 4e 61 6d 65 20 3a 20 50 | 61 74 68 53 74 72 29 3b |Name : P|athStr);|
|00000c70| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00000c80| 7b 41 73 73 69 67 6e 20 | 61 20 6e 61 6d 65 20 74 |{Assign |a name t|
|00000c90| 6f 20 61 20 62 75 66 66 | 65 72 65 64 20 66 69 6c |o a buff|ered fil|
|00000ca0| 65 7d 0d 0a 0d 0a 20 20 | 20 20 46 75 6e 63 74 69 |e}.... | Functi|
|00000cb0| 6f 6e 20 20 46 69 6c 65 | 50 6f 73 3a 4c 6f 6e 67 |on File|Pos:Long|
|00000cc0| 49 6e 74 3b 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |Int;.. | |
|00000cd0| 20 20 20 20 7b 52 65 74 | 75 72 6e 73 20 74 68 65 | {Ret|urns the|
|00000ce0| 20 63 75 72 72 65 6e 74 | 20 70 6f 73 69 74 69 6f | current| positio|
|00000cf0| 6e 20 69 6e 20 61 20 62 | 75 66 66 65 72 65 64 20 |n in a b|uffered |
|00000d00| 66 69 6c 65 7d 0d 0a 0d | 0a 20 20 20 20 50 72 6f |file}...|. Pro|
|00000d10| 63 65 64 75 72 65 20 52 | 65 77 72 69 74 65 28 52 |cedure R|ewrite(R|
|00000d20| 65 63 53 69 7a 65 20 3a | 20 57 6f 72 64 29 3b 0d |ecSize :| Word);.|
|00000d30| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 7b |. | {|
|00000d40| 43 72 65 61 74 65 20 61 | 20 6e 65 77 20 66 69 6c |Create a| new fil|
|00000d50| 65 20 6f 72 20 6f 76 65 | 72 77 72 69 74 65 20 61 |e or ove|rwrite a|
|00000d60| 6e 20 65 78 69 73 74 69 | 6e 67 20 6f 6e 65 7d 0d |n existi|ng one}.|
|00000d70| 0a 0d 0a 20 20 20 20 50 | 72 6f 63 65 64 75 72 65 |... P|rocedure|
|00000d80| 20 52 65 73 65 74 28 52 | 65 63 53 69 7a 65 3a 57 | Reset(R|ecSize:W|
|00000d90| 6f 72 64 29 3b 0d 0a 20 | 20 20 20 20 20 20 20 20 |ord);.. | |
|00000da0| 20 20 20 20 20 7b 4f 70 | 65 6e 20 61 6e 20 65 78 | {Op|en an ex|
|00000db0| 69 73 74 69 6e 67 20 66 | 69 6c 65 7d 0d 0a 0d 0a |isting f|ile}....|
|00000dc0| 20 20 20 20 50 72 6f 63 | 65 64 75 72 65 20 53 65 | Proc|edure Se|
|00000dd0| 74 57 72 69 74 65 42 69 | 61 73 3b 0d 0a 20 20 20 |tWriteBi|as;.. |
|00000de0| 20 20 20 20 20 20 20 20 | 20 20 20 7b 49 6e 64 69 | | {Indi|
|00000df0| 63 61 74 65 2c 20 74 68 | 61 74 20 74 68 65 20 6d |cate, th|at the m|
|00000e00| 61 6a 6f 72 69 74 79 20 | 6f 66 20 74 68 65 20 66 |ajority |of the f|
|00000e10| 69 6c 65 20 6f 70 65 72 | 61 74 69 6f 6e 73 20 77 |ile oper|ations w|
|00000e20| 69 6c 6c 20 62 65 0d 0a | 20 20 20 20 20 20 20 20 |ill be..| |
|00000e30| 20 20 20 20 20 20 20 73 | 65 71 75 65 6e 74 69 61 | s|equentia|
|00000e40| 6c 20 77 72 69 74 65 73 | 20 2d 20 77 68 65 6e 20 |l writes| - when |
|00000e50| 61 20 62 75 66 66 65 72 | 20 6e 65 65 64 73 20 74 |a buffer| needs t|
|00000e60| 6f 20 62 65 20 66 6c 75 | 73 68 65 64 20 41 4c 4c |o be flu|shed ALL|
|00000e70| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00000e80| 20 62 75 66 66 65 72 73 | 20 77 69 6c 6c 20 62 65 | buffers| will be|
|00000e90| 20 66 6c 75 73 68 65 64 | 7d 0d 0a 0d 0a 20 20 20 | flushed|}.... |
|00000ea0| 20 50 72 6f 63 65 64 75 | 72 65 20 53 65 74 52 65 | Procedu|re SetRe|
|00000eb0| 61 64 42 69 61 73 3b 0d | 0a 20 20 20 20 20 20 20 |adBias;.|. |
|00000ec0| 20 20 20 20 20 20 20 7b | 49 6e 64 69 63 61 74 65 | {|Indicate|
|00000ed0| 2c 20 74 68 61 74 20 74 | 68 65 20 6d 61 6a 6f 72 |, that t|he major|
|00000ee0| 69 74 79 20 6f 66 20 74 | 68 65 20 66 69 6c 65 20 |ity of t|he file |
|00000ef0| 6f 70 65 72 61 74 69 6f | 6e 73 20 77 69 6c 6c 20 |operatio|ns will |
|00000f00| 62 65 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |be.. | |
|00000f10| 20 20 20 73 65 71 75 65 | 6e 74 69 61 6c 20 72 65 | seque|ntial re|
|00000f20| 61 64 73 20 2d 20 77 68 | 65 6e 20 61 20 62 75 66 |ads - wh|en a buf|
|00000f30| 66 65 72 20 6e 65 65 64 | 73 20 74 6f 20 62 65 20 |fer need|s to be |
|00000f40| 72 65 61 64 20 41 4c 4c | 20 62 75 66 66 65 72 73 |read ALL| buffers|
|00000f50| 0d 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.. | |
|00000f60| 20 77 69 6c 6c 20 62 65 | 20 72 65 61 64 20 66 72 | will be| read fr|
|00000f70| 6f 6d 20 64 69 73 6b 7d | 0d 0a 0d 0a 20 20 20 20 |om disk}|.... |
|00000f80| 50 72 6f 63 65 64 75 72 | 65 20 52 65 73 65 74 42 |Procedur|e ResetB|
|00000f90| 69 61 73 3b 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |ias;.. | |
|00000fa0| 20 20 20 20 7b 52 65 73 | 65 74 20 66 69 6c 65 20 | {Res|et file |
|00000fb0| 61 63 63 65 73 73 20 63 | 68 61 72 61 63 74 65 72 |access c|haracter|
|00000fc0| 69 73 74 69 63 73 20 74 | 6f 20 69 74 73 20 64 65 |istics t|o its de|
|00000fd0| 66 61 75 6c 74 20 76 61 | 6c 75 65 73 7d 0d 0a 0d |fault va|lues}...|
|00000fe0| 0a 20 20 20 20 50 72 6f | 63 65 64 75 72 65 20 44 |. Pro|cedure D|
|00000ff0| 69 73 61 62 6c 65 49 6e | 42 6f 75 6e 64 3b 0d 0a |isableIn|Bound;..|
|00001000| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 7b 44 | | {D|
|00001010| 69 73 61 62 6c 65 20 62 | 75 66 66 65 72 69 6e 67 |isable b|uffering|
|00001020| 20 77 68 65 6e 20 72 65 | 61 64 69 6e 67 20 66 72 | when re|ading fr|
|00001030| 6f 6d 20 61 20 64 61 74 | 61 73 65 74 7d 0d 0a 0d |om a dat|aset}...|
|00001040| 0a 20 20 20 20 50 72 6f | 63 65 64 75 72 65 20 45 |. Pro|cedure E|
|00001050| 6e 61 62 6c 65 49 6e 42 | 6f 75 6e 64 3b 0d 0a 20 |nableInB|ound;.. |
|00001060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 7b 45 6e | | {En|
|00001070| 61 62 6c 65 20 62 75 66 | 66 65 72 69 6e 67 20 77 |able buf|fering w|
|00001080| 68 65 6e 20 72 65 61 64 | 69 6e 67 20 66 72 6f 6d |hen read|ing from|
|00001090| 20 61 20 64 61 74 61 73 | 65 74 7d 0d 0a 0d 0a 20 | a datas|et}.... |
|000010a0| 20 20 20 50 72 6f 63 65 | 64 75 72 65 20 45 6e 61 | Proce|dure Ena|
|000010b0| 62 6c 65 4f 75 74 42 6f | 75 6e 64 3b 0d 0a 20 20 |bleOutBo|und;.. |
|000010c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 7b 45 6e 61 | | {Ena|
|000010d0| 62 6c 65 20 62 75 66 66 | 65 72 69 6e 67 20 77 68 |ble buff|ering wh|
|000010e0| 65 6e 20 77 72 69 74 69 | 6e 67 20 74 6f 20 61 20 |en writi|ng to a |
|000010f0| 64 61 74 61 73 65 74 7d | 0d 0a 0d 0a 20 20 20 20 |dataset}|.... |
|00001100| 50 72 6f 63 65 64 75 72 | 65 20 44 6f 6e 65 3b 0d |Procedur|e Done;.|
|00001110| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 7b |. | {|
|00001120| 43 6c 6f 73 65 20 74 68 | 65 20 66 69 6c 65 20 61 |Close th|e file a|
|00001130| 6e 64 20 66 72 65 65 20 | 61 6c 6c 20 62 75 66 66 |nd free |all buff|
|00001140| 65 72 73 7d 0d 0a 0d 0a | 20 20 65 6e 64 3b 0d 0a |ers}....| end;..|
|00001150| 0d 0a 0d 0a 49 6d 70 6c | 65 6d 65 6e 74 61 74 69 |....Impl|ementati|
|00001160| 6f 6e 0d 0a 0d 0a 0d 0a | 0d 0a 50 72 6f 63 65 64 |on......|..Proced|
|00001170| 75 72 65 20 45 6d 73 45 | 72 72 6f 72 3b 0d 0a 62 |ure EmsE|rror;..b|
|00001180| 65 67 69 6e 0d 0a 20 20 | 57 72 69 74 65 6c 6e 28 |egin.. |Writeln(|
|00001190| 27 53 65 76 65 72 65 20 | 45 72 72 6f 72 20 69 6e |'Severe |Error in|
|000011a0| 20 45 4d 53 20 68 61 6e | 64 6c 65 72 27 29 3b 0d | EMS han|dler');.|
|000011b0| 0a 20 20 72 65 61 64 6c | 6e 3b 0d 0a 20 20 68 61 |. readl|n;.. ha|
|000011c0| 6c 74 3b 0d 0a 65 6e 64 | 3b 0d 0a 0d 0a 46 75 6e |lt;..end|;....Fun|
|000011d0| 63 74 69 6f 6e 20 4d 65 | 6d 54 6f 45 6d 73 28 42 |ction Me|mToEms(B|
|000011e0| 79 74 65 73 49 6e 20 3a | 20 4c 6f 6e 67 49 6e 74 |ytesIn :| LongInt|
|000011f0| 29 20 3a 20 57 6f 72 64 | 3b 0d 0a 62 65 67 69 6e |) : Word|;..begin|
|00001200| 0d 0a 20 20 4d 65 6d 54 | 6f 45 6d 73 3a 3d 28 42 |.. MemT|oEms:=(B|
|00001210| 79 74 65 73 49 6e 2b 31 | 36 33 38 33 29 20 73 68 |ytesIn+1|6383) sh|
|00001220| 72 20 31 34 3b 0d 0a 65 | 6e 64 3b 0d 0a 0d 0a 50 |r 14;..e|nd;....P|
|00001230| 72 6f 63 65 64 75 72 65 | 20 4d 61 70 42 75 66 66 |rocedure| MapBuff|
|00001240| 65 72 28 48 61 6e 64 6c | 65 20 3a 20 57 6f 72 64 |er(Handl|e : Word|
|00001250| 3b 20 42 79 74 65 73 49 | 6e 42 75 66 66 65 72 3a |; BytesI|nBuffer:|
|00001260| 57 6f 72 64 29 3b 0d 0a | 56 41 52 0d 0a 20 20 49 |Word);..|VAR.. I|
|00001270| 20 3a 20 57 6f 72 64 3b | 0d 0a 62 65 67 69 6e 0d | : Word;|..begin.|
|00001280| 0a 20 20 46 6f 72 20 49 | 3a 3d 30 20 74 6f 20 50 |. For I|:=0 to P|
|00001290| 72 65 64 28 4d 65 6d 54 | 6f 45 6d 73 28 42 79 74 |red(MemT|oEms(Byt|
|000012a0| 65 73 49 6e 42 75 66 66 | 65 72 29 29 20 64 6f 20 |esInBuff|er)) do |
|000012b0| 62 65 67 69 6e 0d 0a 20 | 20 20 20 49 66 20 4e 6f |begin.. | If No|
|000012c0| 74 20 4d 61 70 45 6d 73 | 50 61 67 65 28 48 61 6e |t MapEms|Page(Han|
|000012d0| 64 6c 65 2c 69 2c 69 29 | 20 74 68 65 6e 20 45 6d |dle,i,i)| then Em|
|000012e0| 73 45 72 72 6f 72 3b 0d | 0a 20 20 65 6e 64 3b 0d |sError;.|. end;.|
|000012f0| 0a 65 6e 64 3b 0d 0a 0d | 0a 50 72 6f 63 65 64 75 |.end;...|.Procedu|
|00001300| 72 65 20 42 75 66 66 65 | 72 46 69 6c 65 2e 53 65 |re Buffe|rFile.Se|
|00001310| 74 57 72 69 74 65 42 69 | 61 73 3b 0d 0a 62 65 67 |tWriteBi|as;..beg|
|00001320| 69 6e 0d 0a 20 20 46 6c | 75 73 68 41 6c 6c 3a 3d |in.. Fl|ushAll:=|
|00001330| 54 72 75 65 3b 0d 0a 20 | 20 52 65 61 64 41 6c 6c |True;.. | ReadAll|
|00001340| 3a 3d 46 61 6c 73 65 3b | 0d 0a 65 6e 64 3b 0d 0a |:=False;|..end;..|
|00001350| 0d 0a 50 72 6f 63 65 64 | 75 72 65 20 42 75 66 66 |..Proced|ure Buff|
|00001360| 65 72 46 69 6c 65 2e 44 | 69 73 61 62 6c 65 49 6e |erFile.D|isableIn|
|00001370| 42 6f 75 6e 64 3b 0d 0a | 62 65 67 69 6e 0d 0a 20 |Bound;..|begin.. |
|00001380| 20 4e 6f 42 75 66 66 65 | 72 52 65 61 64 73 3a 3d | NoBuffe|rReads:=|
|00001390| 54 72 75 65 3b 0d 0a 65 | 6e 64 3b 0d 0a 0d 0a 50 |True;..e|nd;....P|
|000013a0| 72 6f 63 65 64 75 72 65 | 20 42 75 66 66 65 72 46 |rocedure| BufferF|
|000013b0| 69 6c 65 2e 45 6e 61 62 | 6c 65 49 6e 42 6f 75 6e |ile.Enab|leInBoun|
|000013c0| 64 3b 0d 0a 62 65 67 69 | 6e 0d 0a 20 20 4e 6f 42 |d;..begi|n.. NoB|
|000013d0| 75 66 66 65 72 52 65 61 | 64 73 3a 3d 66 61 6c 73 |ufferRea|ds:=fals|
|000013e0| 65 3b 0d 0a 65 6e 64 3b | 0d 0a 0d 0a 50 72 6f 63 |e;..end;|....Proc|
|000013f0| 65 64 75 72 65 20 42 75 | 66 66 65 72 46 69 6c 65 |edure Bu|fferFile|
|00001400| 2e 44 69 73 61 62 6c 65 | 4f 75 74 42 6f 75 6e 64 |.Disable|OutBound|
|00001410| 3b 0d 0a 62 65 67 69 6e | 0d 0a 20 20 46 6c 75 73 |;..begin|.. Flus|
|00001420| 68 3b 0d 0a 20 20 4e 6f | 42 75 66 66 65 72 57 72 |h;.. No|BufferWr|
|00001430| 69 74 65 73 3a 3d 54 72 | 75 65 3b 0d 0a 65 6e 64 |ites:=Tr|ue;..end|
|00001440| 3b 0d 0a 0d 0a 50 72 6f | 63 65 64 75 72 65 20 42 |;....Pro|cedure B|
|00001450| 75 66 66 65 72 46 69 6c | 65 2e 45 6e 61 62 6c 65 |ufferFil|e.Enable|
|00001460| 4f 75 74 42 6f 75 6e 64 | 3b 0d 0a 62 65 67 69 6e |OutBound|;..begin|
|00001470| 0d 0a 20 20 4e 6f 42 75 | 66 66 65 72 57 72 69 74 |.. NoBu|fferWrit|
|00001480| 65 73 3a 3d 46 61 6c 73 | 65 3b 0d 0a 65 6e 64 3b |es:=Fals|e;..end;|
|00001490| 0d 0a 0d 0a 50 72 6f 63 | 65 64 75 72 65 20 42 75 |....Proc|edure Bu|
|000014a0| 66 66 65 72 46 69 6c 65 | 2e 52 65 73 65 74 42 69 |fferFile|.ResetBi|
|000014b0| 61 73 3b 0d 0a 62 65 67 | 69 6e 0d 0a 20 20 46 6c |as;..beg|in.. Fl|
|000014c0| 75 73 68 41 6c 6c 3a 3d | 46 61 6c 73 65 3b 0d 0a |ushAll:=|False;..|
|000014d0| 20 20 52 65 61 64 41 6c | 6c 3a 3d 46 61 6c 73 65 | ReadAl|l:=False|
|000014e0| 3b 0d 0a 20 20 4e 6f 42 | 75 66 66 65 72 52 65 61 |;.. NoB|ufferRea|
|000014f0| 64 73 3a 3d 46 61 6c 73 | 65 3b 0d 0a 20 20 4e 6f |ds:=Fals|e;.. No|
|00001500| 42 75 66 66 65 72 57 72 | 69 74 65 73 3a 3d 46 61 |BufferWr|ites:=Fa|
|00001510| 6c 73 65 3b 0d 0a 65 6e | 64 3b 0d 0a 0d 0a 50 72 |lse;..en|d;....Pr|
|00001520| 6f 63 65 64 75 72 65 20 | 42 75 66 66 65 72 46 69 |ocedure |BufferFi|
|00001530| 6c 65 2e 53 65 74 52 65 | 61 64 42 69 61 73 3b 0d |le.SetRe|adBias;.|
|00001540| 0a 62 65 67 69 6e 0d 0a | 20 20 46 6c 75 73 68 41 |.begin..| FlushA|
|00001550| 6c 6c 3a 3d 46 61 6c 73 | 65 3b 0d 0a 20 20 52 65 |ll:=Fals|e;.. Re|
|00001560| 61 64 41 6c 6c 3a 3d 54 | 72 75 65 3b 0d 0a 65 6e |adAll:=T|rue;..en|
|00001570| 64 3b 0d 0a 0d 0a 0d 0a | 43 6f 6e 73 74 72 75 63 |d;......|Construc|
|00001580| 74 6f 72 20 42 75 66 66 | 65 72 44 65 73 63 2e 49 |tor Buff|erDesc.I|
|00001590| 6e 69 74 28 42 75 66 66 | 65 72 53 69 7a 65 20 3a |nit(Buff|erSize :|
|000015a0| 20 57 6f 72 64 3b 20 55 | 73 65 45 6d 73 20 3a 20 | Word; U|seEms : |
|000015b0| 42 6f 6f 6c 65 61 6e 29 | 3b 0d 0a 62 65 67 69 6e |Boolean)|;..begin|
|000015c0| 0d 0a 20 20 49 6e 45 6d | 73 3a 3d 55 73 65 45 6d |.. InEm|s:=UseEm|
|000015d0| 73 20 61 6e 64 20 45 6d | 73 49 6e 73 74 61 6c 6c |s and Em|sInstall|
|000015e0| 65 64 20 61 6e 64 0d 0a | 20 20 20 20 28 45 6d 73 |ed and..| (Ems|
|000015f0| 50 61 67 65 73 41 76 61 | 69 6c 3e 3d 4d 65 6d 54 |PagesAva|il>=MemT|
|00001600| 6f 45 6d 73 28 42 75 66 | 66 65 72 73 69 7a 65 29 |oEms(Buf|fersize)|
|00001610| 29 3b 0d 0a 20 20 53 69 | 7a 65 3a 3d 42 75 66 66 |);.. Si|ze:=Buff|
|00001620| 65 72 53 69 7a 65 3b 0d | 0a 20 20 49 66 20 49 6e |erSize;.|. If In|
|00001630| 45 6d 73 20 74 68 65 6e | 20 62 65 67 69 6e 0d 0a |Ems then| begin..|
|00001640| 20 20 20 20 45 6d 73 48 | 61 6e 64 6c 65 3a 3d 41 | EmsH|andle:=A|
|00001650| 6c 6c 6f 63 61 74 65 45 | 4d 53 50 61 67 65 73 28 |llocateE|MSPages(|
|00001660| 4d 65 6d 54 6f 45 6d 73 | 28 53 69 7a 65 29 29 3b |MemToEms|(Size));|
|00001670| 0d 0a 20 20 20 20 49 66 | 20 45 6d 73 48 61 6e 64 |.. If| EmsHand|
|00001680| 6c 65 3d 45 6d 73 45 72 | 72 6f 72 43 6f 64 65 20 |le=EmsEr|rorCode |
|00001690| 74 68 65 6e 20 45 6d 73 | 45 72 72 6f 72 3b 0d 0a |then Ems|Error;..|
|000016a0| 20 20 20 20 42 75 66 66 | 65 72 41 64 64 72 3a 3d | Buff|erAddr:=|
|000016b0| 45 6d 73 50 61 67 65 46 | 72 61 6d 65 50 74 72 3b |EmsPageF|ramePtr;|
|000016c0| 0d 0a 20 20 65 6e 64 20 | 65 6c 73 65 20 47 65 74 |.. end |else Get|
|000016d0| 4d 65 6d 28 42 75 66 66 | 65 72 41 64 64 72 2c 53 |Mem(Buff|erAddr,S|
|000016e0| 69 7a 65 29 3b 0d 0a 20 | 20 4e 65 78 74 3a 3d 4e |ize);.. | Next:=N|
|000016f0| 69 6c 3b 0d 0a 65 6e 64 | 3b 0d 0a 0d 0a 46 75 6e |il;..end|;....Fun|
|00001700| 63 74 69 6f 6e 20 42 75 | 66 66 65 72 44 65 73 63 |ction Bu|fferDesc|
|00001710| 2e 4d 61 70 28 4f 66 66 | 73 65 74 2c 20 4c 65 6e |.Map(Off|set, Len|
|00001720| 67 74 68 20 3a 20 57 6f | 72 64 29 20 3a 20 42 69 |gth : Wo|rd) : Bi|
|00001730| 67 42 6c 6f 63 6b 50 74 | 72 3b 0d 0a 56 41 52 0d |gBlockPt|r;..VAR.|
|00001740| 0a 20 20 48 69 67 68 4f | 66 66 73 65 74 20 3a 20 |. HighO|ffset : |
|00001750| 57 6f 72 64 3b 0d 0a 20 | 20 4d 79 50 6f 69 6e 74 |Word;.. | MyPoint|
|00001760| 65 72 20 20 3a 20 42 69 | 67 42 6c 6f 63 6b 50 54 |er : Bi|gBlockPT|
|00001770| 72 3b 0d 0a 62 65 67 69 | 6e 0d 0a 20 20 4d 79 50 |r;..begi|n.. MyP|
|00001780| 6f 69 6e 74 65 72 3a 3d | 42 75 66 66 65 72 41 64 |ointer:=|BufferAd|
|00001790| 64 72 3b 0d 0a 20 20 49 | 6e 63 28 50 74 72 52 65 |dr;.. I|nc(PtrRe|
|000017a0| 63 28 4d 79 50 6f 69 6e | 74 65 72 29 2e 4f 66 73 |c(MyPoin|ter).Ofs|
|000017b0| 2c 4f 66 66 73 65 74 29 | 3b 0d 0a 20 20 4d 61 70 |,Offset)|;.. Map|
|000017c0| 3a 3d 4d 79 50 6f 69 6e | 74 65 72 3b 0d 0a 20 20 |:=MyPoin|ter;.. |
|000017d0| 49 66 20 49 6e 45 6d 73 | 20 74 68 65 6e 20 62 65 |If InEms| then be|
|000017e0| 67 69 6e 0d 0a 20 20 20 | 20 48 69 67 68 4f 66 66 |gin.. | HighOff|
|000017f0| 73 65 74 3a 3d 50 72 65 | 64 28 4f 66 66 73 65 74 |set:=Pre|d(Offset|
|00001800| 2b 4c 65 6e 67 74 68 29 | 3b 0d 0a 20 20 20 20 4f |+Length)|;.. O|
|00001810| 66 66 73 65 74 3a 3d 4f | 66 66 73 65 74 20 53 68 |ffset:=O|ffset Sh|
|00001820| 72 20 31 34 3b 0d 0a 20 | 20 20 20 48 69 67 68 4f |r 14;.. | HighO|
|00001830| 66 66 73 65 74 3a 3d 48 | 69 67 68 4f 66 66 73 65 |ffset:=H|ighOffse|
|00001840| 74 20 73 68 72 20 31 34 | 3b 0d 0a 20 20 20 20 72 |t shr 14|;.. r|
|00001850| 65 70 65 61 74 0d 0a 20 | 20 20 20 20 20 49 66 20 |epeat.. | If |
|00001860| 4e 6f 74 20 4d 61 70 45 | 6d 73 50 61 67 65 28 45 |Not MapE|msPage(E|
|00001870| 4d 53 48 61 6e 64 6c 65 | 2c 4f 66 66 73 65 74 2c |MSHandle|,Offset,|
|00001880| 4f 66 66 73 65 74 29 20 | 74 68 65 6e 20 45 6d 73 |Offset) |then Ems|
|00001890| 45 72 72 6f 72 3b 0d 0a | 20 20 20 20 20 20 49 4e |Error;..| IN|
|000018a0| 43 28 4f 66 66 73 65 74 | 29 3b 0d 0a 20 20 20 20 |C(Offset|);.. |
|000018b0| 75 6e 74 69 6c 20 4f 66 | 66 73 65 74 3e 48 69 67 |until Of|fset>Hig|
|000018c0| 68 4f 66 66 73 65 74 3b | 0d 0a 20 20 65 6e 64 3b |hOffset;|.. end;|
|000018d0| 0d 0a 65 6e 64 3b 0d 0a | 0d 0a 44 65 73 74 72 75 |..end;..|..Destru|
|000018e0| 63 74 6f 72 20 42 75 66 | 66 65 72 44 65 73 63 2e |ctor Buf|ferDesc.|
|000018f0| 44 6f 6e 65 3b 0d 0a 62 | 65 67 69 6e 0d 0a 20 20 |Done;..b|egin.. |
|00001900| 49 46 20 49 6e 45 6d 73 | 20 74 68 65 6e 20 62 65 |IF InEms| then be|
|00001910| 67 69 6e 0d 0a 20 20 20 | 20 49 66 20 4e 6f 74 20 |gin.. | If Not |
|00001920| 44 65 61 6c 6c 6f 63 61 | 74 65 45 6d 73 48 61 6e |Dealloca|teEmsHan|
|00001930| 64 6c 65 28 45 6d 73 68 | 61 6e 64 6c 65 29 20 74 |dle(Emsh|andle) t|
|00001940| 68 65 6e 20 45 6d 73 45 | 72 72 6f 72 3b 0d 0a 20 |hen EmsE|rror;.. |
|00001950| 20 65 6e 64 20 65 6c 73 | 65 20 46 72 65 65 4d 65 | end els|e FreeMe|
|00001960| 6d 28 42 75 66 66 65 72 | 41 64 64 72 2c 53 69 7a |m(Buffer|Addr,Siz|
|00001970| 65 29 3b 0d 0a 65 6e 64 | 3b 0d 0a 0d 0a 43 6f 6e |e);..end|;....Con|
|00001980| 73 74 72 75 63 74 6f 72 | 20 46 69 6c 65 42 75 66 |structor| FileBuf|
|00001990| 66 65 72 44 65 73 63 2e | 49 6e 69 74 28 42 75 66 |ferDesc.|Init(Buf|
|000019a0| 66 65 72 53 69 7a 65 20 | 3a 20 57 6f 72 64 3b 20 |ferSize |: Word; |
|000019b0| 55 73 65 45 6d 73 20 3a | 20 42 6f 6f 6c 65 61 6e |UseEms :| Boolean|
|000019c0| 29 3b 0d 0a 62 65 67 69 | 6e 0d 0a 20 20 42 75 66 |);..begi|n.. Buf|
|000019d0| 66 65 72 44 65 73 63 2e | 49 6e 69 74 28 42 75 66 |ferDesc.|Init(Buf|
|000019e0| 66 65 72 53 69 7a 65 2c | 20 55 73 65 45 6d 73 29 |ferSize,| UseEms)|
|000019f0| 3b 0d 0a 20 20 49 6e 69 | 74 69 61 6c 69 7a 65 64 |;.. Ini|tialized|
|00001a00| 3a 3d 46 61 6c 73 65 3b | 0d 0a 20 20 4d 6f 64 69 |:=False;|.. Modi|
|00001a10| 66 69 65 64 3a 3d 46 61 | 6c 73 65 3b 0d 0a 65 6e |fied:=Fa|lse;..en|
|00001a20| 64 3b 0d 0a 0d 0a 50 72 | 6f 63 65 64 75 72 65 20 |d;....Pr|ocedure |
|00001a30| 42 75 66 66 65 72 43 68 | 61 69 6e 2e 49 6e 69 74 |BufferCh|ain.Init|
|00001a40| 28 42 75 66 53 69 7a 65 | 2c 20 42 75 66 4e 75 6d |(BufSize|, BufNum|
|00001a50| 20 3a 20 57 6f 72 64 3b | 20 55 73 65 45 6d 73 20 | : Word;| UseEms |
|00001a60| 3a 20 42 6f 6f 6c 65 61 | 6e 29 3b 0d 0a 56 41 52 |: Boolea|n);..VAR|
|00001a70| 0d 0a 20 20 49 20 3a 20 | 57 6f 72 64 3b 0d 0a 62 |.. I : |Word;..b|
|00001a80| 65 67 69 6e 0d 0a 20 20 | 4e 75 6d 62 65 72 4f 66 |egin.. |NumberOf|
|00001a90| 42 75 66 66 65 72 73 3a | 3d 42 75 66 4e 75 6d 3b |Buffers:|=BufNum;|
|00001aa0| 0d 0a 20 20 42 75 66 66 | 65 72 54 61 69 6c 3a 3d |.. Buff|erTail:=|
|00001ab0| 4e 69 6c 3b 0d 0a 20 20 | 46 6f 72 20 69 3a 3d 31 |Nil;.. |For i:=1|
|00001ac0| 20 74 6f 20 42 75 66 4e | 75 6d 20 64 6f 20 62 65 | to BufN|um do be|
|00001ad0| 67 69 6e 0d 0a 20 20 20 | 20 4e 65 77 28 42 75 66 |gin.. | New(Buf|
|00001ae0| 66 65 72 48 65 61 64 2c | 49 6e 69 74 28 42 75 66 |ferHead,|Init(Buf|
|00001af0| 53 69 7a 65 2c 55 73 65 | 45 6d 73 29 29 3b 0d 0a |Size,Use|Ems));..|
|00001b00| 20 20 20 20 42 75 66 66 | 65 72 48 65 61 64 5e 2e | Buff|erHead^.|
|00001b10| 4e 65 78 74 3a 3d 42 75 | 66 66 65 72 54 61 69 6c |Next:=Bu|fferTail|
|00001b20| 3b 0d 0a 20 20 20 20 42 | 75 66 66 65 72 54 61 69 |;.. B|ufferTai|
|00001b30| 6c 3a 3d 42 75 66 66 65 | 72 48 65 61 64 3b 0d 0a |l:=Buffe|rHead;..|
|00001b40| 20 20 65 6e 64 3b 0d 0a | 20 20 57 68 69 6c 65 20 | end;..| While |
|00001b50| 42 75 66 66 65 72 54 61 | 69 6c 5e 2e 4e 65 78 74 |BufferTa|il^.Next|
|00001b60| 3c 3e 4e 69 6c 20 64 6f | 20 42 75 66 66 65 72 54 |<>Nil do| BufferT|
|00001b70| 61 69 6c 3a 3d 42 75 66 | 66 65 72 54 61 69 6c 5e |ail:=Buf|ferTail^|
|00001b80| 2e 4e 65 78 74 3b 0d 0a | 65 6e 64 3b 0d 0a 0d 0a |.Next;..|end;....|
|00001b90| 50 72 6f 63 65 64 75 72 | 65 20 42 75 66 66 65 72 |Procedur|e Buffer|
|00001ba0| 43 68 61 69 6e 2e 43 68 | 61 69 6e 41 74 45 6e 64 |Chain.Ch|ainAtEnd|
|00001bb0| 28 56 41 52 20 42 20 3a | 20 46 69 6c 65 42 75 66 |(VAR B :| FileBuf|
|00001bc0| 66 65 72 50 74 72 29 3b | 0d 0a 56 41 52 0d 0a 20 |ferPtr);|..VAR.. |
|00001bd0| 20 42 75 66 50 74 72 3a | 46 69 6c 65 42 75 66 66 | BufPtr:|FileBuff|
|00001be0| 65 72 50 74 72 3b 0d 0a | 62 65 67 69 6e 0d 0a 20 |erPtr;..|begin.. |
|00001bf0| 20 49 66 20 28 4e 75 6d | 62 65 72 4f 66 42 75 66 | If (Num|berOfBuf|
|00001c00| 66 65 72 73 3e 31 29 20 | 61 6e 64 20 28 42 3c 3e |fers>1) |and (B<>|
|00001c10| 42 75 66 66 65 72 54 61 | 69 6c 29 20 74 68 65 6e |BufferTa|il) then|
|00001c20| 20 62 65 67 69 6e 0d 0a | 20 20 20 20 42 75 66 66 | begin..| Buff|
|00001c30| 65 72 54 61 69 6c 5e 2e | 4e 65 78 74 3a 3d 42 3b |erTail^.|Next:=B;|
|00001c40| 0d 0a 20 20 20 20 42 75 | 66 66 65 72 54 61 69 6c |.. Bu|fferTail|
|00001c50| 3a 3d 42 3b 0d 0a 20 20 | 20 20 49 66 20 42 3d 42 |:=B;.. | If B=B|
|00001c60| 75 66 66 65 72 48 65 61 | 64 20 74 68 65 6e 20 62 |ufferHea|d then b|
|00001c70| 65 67 69 6e 0d 0a 20 20 | 20 20 20 20 42 75 66 66 |egin.. | Buff|
|00001c80| 65 72 48 65 61 64 3a 3d | 42 5e 2e 4e 65 78 74 3b |erHead:=|B^.Next;|
|00001c90| 0d 0a 20 20 20 20 20 20 | 42 5e 2e 4e 65 78 74 3a |.. |B^.Next:|
|00001ca0| 3d 4e 69 6c 3b 0d 0a 20 | 20 20 20 65 6e 64 20 65 |=Nil;.. | end e|
|00001cb0| 6c 73 65 20 62 65 67 69 | 6e 0d 0a 20 20 20 20 20 |lse begi|n.. |
|00001cc0| 20 42 75 66 70 74 72 3a | 3d 42 75 66 66 65 72 48 | Bufptr:|=BufferH|
|00001cd0| 65 61 64 3b 0d 0a 20 20 | 20 20 20 20 57 68 69 6c |ead;.. | Whil|
|00001ce0| 65 20 42 75 66 50 74 72 | 5e 2e 4e 65 78 74 3c 3e |e BufPtr|^.Next<>|
|00001cf0| 42 20 64 6f 20 42 75 66 | 70 74 72 3a 3d 42 75 66 |B do Buf|ptr:=Buf|
|00001d00| 50 74 72 5e 2e 4e 65 78 | 74 3b 0d 0a 20 20 20 20 |Ptr^.Nex|t;.. |
|00001d10| 20 20 42 75 66 50 74 72 | 5e 2e 4e 65 78 74 3a 3d | BufPtr|^.Next:=|
|00001d20| 42 5e 2e 4e 65 78 74 3b | 0d 0a 20 20 20 20 20 20 |B^.Next;|.. |
|00001d30| 42 5e 2e 4e 65 78 74 3a | 3d 4e 69 6c 3b 0d 0a 20 |B^.Next:|=Nil;.. |
|00001d40| 20 20 20 65 6e 64 3b 0d | 0a 20 20 65 6e 64 3b 0d | end;.|. end;.|
|00001d50| 0a 65 6e 64 3b 0d 0a 0d | 0a 0d 0a 50 72 6f 63 65 |.end;...|...Proce|
|00001d60| 64 75 72 65 20 42 75 66 | 66 65 72 46 69 6c 65 2e |dure Buf|ferFile.|
|00001d70| 49 6e 69 74 28 42 75 66 | 53 69 7a 65 2c 20 42 75 |Init(Buf|Size, Bu|
|00001d80| 66 4e 75 6d 3a 57 6f 72 | 64 3b 20 55 73 65 45 6d |fNum:Wor|d; UseEm|
|00001d90| 73 20 3a 20 42 6f 6f 6c | 65 61 6e 29 3b 0d 0a 56 |s : Bool|ean);..V|
|00001da0| 41 52 0d 0a 20 20 49 20 | 3a 20 57 6f 72 64 3b 0d |AR.. I |: Word;.|
|00001db0| 0a 62 65 67 69 6e 0d 0a | 20 20 49 66 20 28 42 75 |.begin..| If (Bu|
|00001dc0| 66 53 69 7a 65 3d 30 29 | 20 6f 72 20 28 42 75 66 |fSize=0)| or (Buf|
|00001dd0| 4e 75 6d 3d 30 29 20 74 | 68 65 6e 20 62 65 67 69 |Num=0) t|hen begi|
|00001de0| 6e 0d 0a 20 20 20 20 4e | 6f 42 75 66 66 65 72 49 |n.. N|oBufferI|
|00001df0| 6e 67 3a 3d 54 72 75 65 | 3b 0d 0a 20 20 20 20 65 |ng:=True|;.. e|
|00001e00| 78 69 74 3b 0d 0a 20 20 | 65 6e 64 3b 0d 0a 20 20 |xit;.. |end;.. |
|00001e10| 55 73 65 45 6d 73 3a 3d | 55 73 65 45 6d 73 20 61 |UseEms:=|UseEms a|
|00001e20| 6e 64 20 45 6d 73 49 6e | 73 74 61 6c 6c 65 64 20 |nd EmsIn|stalled |
|00001e30| 61 6e 64 0d 0a 20 20 20 | 20 28 45 6d 73 50 61 67 |and.. | (EmsPag|
|00001e40| 65 73 41 76 61 69 6c 3e | 3d 42 75 66 4e 75 6d 20 |esAvail>|=BufNum |
|00001e50| 2a 20 4d 65 6d 54 6f 45 | 6d 73 28 42 75 66 73 69 |* MemToE|ms(Bufsi|
|00001e60| 7a 65 29 29 3b 0d 0a 20 | 20 42 75 66 66 65 72 73 |ze));.. | Buffers|
|00001e70| 2e 49 6e 69 74 28 42 75 | 66 53 69 7a 65 2c 20 42 |.Init(Bu|fSize, B|
|00001e80| 75 66 4e 75 6d 2c 20 55 | 53 65 45 6d 73 29 3b 0d |ufNum, U|SeEms);.|
|00001e90| 0a 20 20 46 6c 75 73 68 | 41 6c 6c 3a 3d 46 61 6c |. Flush|All:=Fal|
|00001ea0| 73 65 3b 0d 0a 20 20 52 | 65 61 64 41 6c 6c 3a 3d |se;.. R|eadAll:=|
|00001eb0| 46 61 6c 73 65 3b 0d 0a | 20 20 4e 6f 42 75 66 66 |False;..| NoBuff|
|00001ec0| 65 72 52 65 61 64 73 3a | 3d 46 61 6c 73 65 3b 0d |erReads:|=False;.|
|00001ed0| 0a 20 20 4e 6f 42 75 66 | 66 65 72 57 72 69 74 65 |. NoBuf|ferWrite|
|00001ee0| 73 3a 3d 46 61 6c 73 65 | 3b 0d 0a 20 20 4e 6f 42 |s:=False|;.. NoB|
|00001ef0| 75 66 66 65 72 69 6e 67 | 3a 3d 46 61 6c 73 65 3b |uffering|:=False;|
|00001f00| 0d 0a 20 20 42 6c 6f 63 | 6b 53 69 7a 65 3a 3d 42 |.. Bloc|kSize:=B|
|00001f10| 75 66 53 69 7a 65 3b 0d | 0a 65 6e 64 3b 0d 0a 0d |ufSize;.|.end;...|
|00001f20| 0a 46 75 6e 63 74 69 6f | 6e 20 42 75 66 66 65 72 |.Functio|n Buffer|
|00001f30| 46 69 6c 65 2e 46 72 65 | 65 42 75 66 66 65 72 3a |File.Fre|eBuffer:|
|00001f40| 46 69 6c 65 42 75 66 66 | 65 72 50 74 72 3b 0d 0a |FileBuff|erPtr;..|
|00001f50| 56 41 52 0d 0a 20 20 42 | 75 66 50 74 72 2c 53 61 |VAR.. B|ufPtr,Sa|
|00001f60| 76 65 50 74 72 20 3a 20 | 46 69 6c 65 42 75 66 66 |vePtr : |FileBuff|
|00001f70| 65 72 50 74 72 3b 0d 0a | 20 20 4c 6f 77 50 6f 73 |erPtr;..| LowPos|
|00001f80| 20 3a 20 4c 6f 6e 67 49 | 6e 74 3b 0d 0a 20 20 4d | : LongI|nt;.. M|
|00001f90| 79 50 6f 69 6e 74 65 72 | 20 3a 20 50 6f 69 6e 74 |yPointer| : Point|
|00001fa0| 65 72 3b 0d 0a 62 65 67 | 69 6e 0d 0a 20 20 42 75 |er;..beg|in.. Bu|
|00001fb0| 66 50 74 72 3a 3d 42 75 | 66 66 65 72 73 2e 42 75 |fPtr:=Bu|ffers.Bu|
|00001fc0| 66 66 65 72 48 65 61 64 | 3b 0d 0a 20 20 4c 6f 77 |fferHead|;.. Low|
|00001fd0| 50 6f 73 3a 3d 24 37 66 | 66 66 66 66 66 66 3b 0d |Pos:=$7f|ffffff;.|
|00001fe0| 0a 20 20 57 68 69 6c 65 | 20 42 75 66 50 74 72 3c |. While| BufPtr<|
|00001ff0| 3e 4e 69 6c 20 64 6f 20 | 62 65 67 69 6e 0d 0a 20 |>Nil do |begin.. |
|00002000| 20 20 20 57 69 74 68 20 | 42 75 66 50 74 72 5e 20 | With |BufPtr^ |
|00002010| 64 6f 20 62 65 67 69 6e | 0d 0a 20 20 20 20 20 20 |do begin|.. |
|00002020| 49 66 20 28 4e 6f 74 20 | 4d 6f 64 69 66 69 65 64 |If (Not |Modified|
|00002030| 29 20 6f 72 20 28 4e 6f | 74 20 69 6e 69 74 69 61 |) or (No|t initia|
|00002040| 6c 69 7a 65 64 29 20 74 | 68 65 6e 20 62 65 67 69 |lized) t|hen begi|
|00002050| 6e 0d 0a 20 20 20 20 20 | 20 20 20 46 72 65 65 42 |n.. | FreeB|
|00002060| 75 66 66 65 72 3a 3d 42 | 75 66 50 74 72 3b 0d 0a |uffer:=B|ufPtr;..|
|00002070| 20 20 20 20 20 20 20 20 | 4d 6f 64 69 66 69 65 64 | |Modified|
|00002080| 3a 3d 46 61 6c 73 65 3b | 0d 0a 20 20 20 20 20 20 |:=False;|.. |
|00002090| 20 20 46 72 65 65 42 75 | 66 66 65 72 3a 3d 42 75 | FreeBu|ffer:=Bu|
|000020a0| 66 50 74 72 3b 0d 0a 20 | 20 20 20 20 20 20 20 42 |fPtr;.. | B|
|000020b0| 75 66 66 65 72 73 2e 43 | 68 61 69 6e 41 74 45 6e |uffers.C|hainAtEn|
|000020c0| 64 28 42 75 66 50 74 72 | 29 3b 0d 0a 20 20 20 20 |d(BufPtr|);.. |
|000020d0| 20 20 20 20 45 78 69 74 | 3b 0d 0a 20 20 20 20 20 | Exit|;.. |
|000020e0| 20 65 6e 64 3b 0d 0a 20 | 20 20 20 20 20 49 66 20 | end;.. | If |
|000020f0| 50 6f 73 42 75 66 66 65 | 72 3c 4c 6f 77 50 6f 73 |PosBuffe|r<LowPos|
|00002100| 20 74 68 65 6e 20 62 65 | 67 69 6e 0d 0a 20 20 20 | then be|gin.. |
|00002110| 20 20 20 20 20 4c 6f 77 | 50 6f 73 3a 3d 50 6f 73 | Low|Pos:=Pos|
|00002120| 42 75 66 66 65 72 3b 0d | 0a 20 20 20 20 20 20 20 |Buffer;.|. |
|00002130| 20 53 61 76 65 50 74 72 | 3a 3d 42 75 66 50 74 72 | SavePtr|:=BufPtr|
|00002140| 3b 0d 0a 20 20 20 20 20 | 20 65 6e 64 3b 0d 0a 20 |;.. | end;.. |
|00002150| 20 20 20 20 20 42 75 66 | 50 74 72 3a 3d 4e 65 78 | Buf|Ptr:=Nex|
|00002160| 74 3b 0d 0a 20 20 20 20 | 65 6e 64 3b 0d 0a 20 20 |t;.. |end;.. |
|00002170| 65 6e 64 3b 0d 0a 20 20 | 49 66 20 46 6c 75 73 68 |end;.. |If Flush|
|00002180| 41 6c 6c 20 74 68 65 6e | 20 62 65 67 69 6e 0d 0a |All then| begin..|
|00002190| 20 20 20 20 46 6c 75 73 | 68 3b 0d 0a 20 20 20 20 | Flus|h;.. |
|000021a0| 46 72 65 65 42 75 66 66 | 65 72 3a 3d 42 75 66 66 |FreeBuff|er:=Buff|
|000021b0| 65 72 73 2e 42 75 66 66 | 65 72 48 65 61 64 3b 0d |ers.Buff|erHead;.|
|000021c0| 0a 20 20 65 6e 64 3b 0d | 0a 20 20 57 69 74 68 20 |. end;.|. With |
|000021d0| 53 61 76 65 50 74 72 5e | 20 64 6f 20 62 65 67 69 |SavePtr^| do begi|
|000021e0| 6e 0d 0a 20 20 20 20 53 | 79 73 74 65 6d 2e 53 65 |n.. S|ystem.Se|
|000021f0| 65 6b 28 46 2c 50 6f 73 | 42 75 66 66 65 72 29 3b |ek(F,Pos|Buffer);|
|00002200| 0d 0a 20 20 20 20 4d 79 | 50 6f 69 6e 74 65 72 3a |.. My|Pointer:|
|00002210| 3d 4d 61 70 28 30 2c 42 | 79 74 65 73 55 73 65 64 |=Map(0,B|ytesUsed|
|00002220| 29 3b 0d 0a 20 20 20 20 | 42 6c 6f 63 6b 57 72 69 |);.. |BlockWri|
|00002230| 74 65 28 46 2c 4d 79 50 | 6f 69 6e 74 65 72 5e 2c |te(F,MyP|ointer^,|
|00002240| 42 79 74 65 73 55 73 65 | 64 29 3b 0d 0a 20 20 20 |BytesUse|d);.. |
|00002250| 20 42 79 74 65 73 55 73 | 65 64 3a 3d 30 3b 0d 0a | BytesUs|ed:=0;..|
|00002260| 20 20 20 20 4d 6f 64 69 | 66 69 65 64 3a 3d 46 61 | Modi|fied:=Fa|
|00002270| 6c 73 65 3b 0d 0a 20 20 | 65 6e 64 3b 0d 0a 20 20 |lse;.. |end;.. |
|00002280| 46 72 65 65 42 75 66 66 | 65 72 3a 3d 53 61 76 65 |FreeBuff|er:=Save|
|00002290| 50 74 72 3b 0d 0a 20 20 | 42 75 66 66 65 72 73 2e |Ptr;.. |Buffers.|
|000022a0| 43 68 61 69 6e 41 74 45 | 6e 64 28 53 61 76 65 50 |ChainAtE|nd(SaveP|
|000022b0| 74 72 29 3b 0d 0a 65 6e | 64 3b 0d 0a 0d 0a 50 72 |tr);..en|d;....Pr|
|000022c0| 6f 63 65 64 75 72 65 20 | 42 75 66 66 65 72 46 69 |ocedure |BufferFi|
|000022d0| 6c 65 2e 46 6c 75 73 68 | 3b 0d 0a 56 41 52 0d 0a |le.Flush|;..VAR..|
|000022e0| 20 20 42 75 66 50 74 72 | 20 3a 20 46 69 6c 65 42 | BufPtr| : FileB|
|000022f0| 75 66 66 65 72 50 74 72 | 3b 0d 0a 20 20 4d 79 50 |ufferPtr|;.. MyP|
|00002300| 6f 69 6e 74 65 72 20 3a | 20 50 6f 69 6e 74 65 72 |ointer :| Pointer|
|00002310| 3b 0d 0a 62 65 67 69 6e | 0d 0a 20 20 49 66 20 4e |;..begin|.. If N|
|00002320| 6f 42 75 66 66 65 72 69 | 6e 67 20 74 68 65 6e 20 |oBufferi|ng then |
|00002330| 65 78 69 74 3b 0d 0a 20 | 20 42 75 66 50 74 72 3a |exit;.. | BufPtr:|
|00002340| 3d 42 75 66 66 65 72 73 | 2e 42 75 66 66 65 72 48 |=Buffers|.BufferH|
|00002350| 65 61 64 3b 0d 0a 20 20 | 57 68 69 6c 65 20 42 75 |ead;.. |While Bu|
|00002360| 66 50 74 72 3c 3e 4e 69 | 6c 20 64 6f 20 62 65 67 |fPtr<>Ni|l do beg|
|00002370| 69 6e 0d 0a 20 20 20 20 | 57 69 74 68 20 42 75 66 |in.. |With Buf|
|00002380| 50 54 72 5e 20 64 6f 20 | 62 65 67 69 6e 0d 0a 20 |PTr^ do |begin.. |
|00002390| 20 20 20 20 20 49 66 20 | 4d 6f 64 69 66 69 65 64 | If |Modified|
|000023a0| 20 74 68 65 6e 20 62 65 | 67 69 6e 0d 0a 20 20 20 | then be|gin.. |
|000023b0| 20 20 20 20 20 53 79 73 | 74 65 6d 2e 53 65 65 6b | Sys|tem.Seek|
|000023c0| 28 46 2c 50 6f 73 42 75 | 66 66 65 72 29 3b 0d 0a |(F,PosBu|ffer);..|
|000023d0| 20 20 20 20 20 20 20 20 | 4d 79 50 6f 69 6e 74 65 | |MyPointe|
|000023e0| 72 3a 3d 4d 61 70 28 30 | 2c 42 79 74 65 73 55 73 |r:=Map(0|,BytesUs|
|000023f0| 65 64 29 3b 0d 0a 20 20 | 20 20 20 20 20 20 42 6c |ed);.. | Bl|
|00002400| 6f 63 6b 57 72 69 74 65 | 28 46 2c 42 75 66 66 65 |ockWrite|(F,Buffe|
|00002410| 72 41 64 64 72 5e 2c 42 | 79 74 65 73 55 73 65 64 |rAddr^,B|ytesUsed|
|00002420| 29 3b 0d 0a 20 20 20 20 | 20 20 20 20 4d 6f 64 69 |);.. | Modi|
|00002430| 66 69 65 64 3a 3d 46 61 | 6c 73 65 3b 0d 0a 20 20 |fied:=Fa|lse;.. |
|00002440| 20 20 20 20 65 6e 64 3b | 0d 0a 20 20 20 20 20 20 | end;|.. |
|00002450| 42 75 66 50 74 72 3a 3d | 4e 65 78 74 3b 0d 0a 20 |BufPtr:=|Next;.. |
|00002460| 20 20 20 65 6e 64 3b 0d | 0a 20 20 65 6e 64 3b 0d | end;.|. end;.|
|00002470| 0a 65 6e 64 3b 0d 0a 0d | 0a 46 75 6e 63 74 69 6f |.end;...|.Functio|
|00002480| 6e 20 20 42 75 66 66 65 | 72 43 48 61 69 6e 2e 42 |n Buffe|rCHain.B|
|00002490| 75 66 66 65 72 73 55 6e | 55 73 65 64 3a 57 6f 72 |uffersUn|Used:Wor|
|000024a0| 64 3b 0d 0a 56 41 52 0d | 0a 20 20 42 75 66 50 74 |d;..VAR.|. BufPt|
|000024b0| 72 20 3a 20 46 69 6c 65 | 42 75 66 66 65 72 50 74 |r : File|BufferPt|
|000024c0| 72 3b 0d 0a 20 20 43 6f | 75 6e 74 20 3a 20 57 6f |r;.. Co|unt : Wo|
|000024d0| 72 64 3b 0d 0a 62 65 67 | 69 6e 0d 0a 20 20 43 6f |rd;..beg|in.. Co|
|000024e0| 75 6e 74 3a 3d 30 3b 0d | 0a 20 20 42 75 66 50 74 |unt:=0;.|. BufPt|
|000024f0| 72 3a 3d 42 75 66 66 65 | 72 48 65 61 64 3b 0d 0a |r:=Buffe|rHead;..|
|00002500| 20 20 57 68 69 6c 65 20 | 42 75 66 50 74 72 3c 3e | While |BufPtr<>|
|00002510| 4e 69 6c 20 64 6f 20 62 | 65 67 69 6e 0d 0a 20 20 |Nil do b|egin.. |
|00002520| 20 20 57 69 74 68 20 42 | 75 66 50 74 72 5e 20 64 | With B|ufPtr^ d|
|00002530| 6f 20 62 65 67 69 6e 0d | 0a 20 20 20 20 20 20 49 |o begin.|. I|
|00002540| 66 20 28 4e 6f 74 20 49 | 6e 69 74 69 61 6c 69 7a |f (Not I|nitializ|
|00002550| 65 64 29 20 6f 72 20 28 | 4e 6f 74 20 4d 6f 64 69 |ed) or (|Not Modi|
|00002560| 66 69 65 64 29 20 74 68 | 65 6e 20 49 6e 63 28 43 |fied) th|en Inc(C|
|00002570| 6f 75 6e 74 29 3b 0d 0a | 20 20 20 20 20 20 42 75 |ount);..| Bu|
|00002580| 66 50 74 72 3a 3d 4e 65 | 78 74 3b 0d 0a 20 20 20 |fPtr:=Ne|xt;.. |
|00002590| 20 65 6e 64 3b 0d 0a 20 | 20 65 6e 64 3b 0d 0a 20 | end;.. | end;.. |
|000025a0| 20 42 75 66 66 65 72 73 | 55 6e 55 73 65 64 3a 3d | Buffers|UnUsed:=|
|000025b0| 43 6f 75 6e 74 3b 0d 0a | 65 6e 64 3b 0d 0a 0d 0a |Count;..|end;....|
|000025c0| 46 75 6e 63 74 69 6f 6e | 20 42 75 66 66 65 72 46 |Function| BufferF|
|000025d0| 69 6c 65 2e 46 69 6c 65 | 53 69 7a 65 3a 4c 6f 6e |ile.File|Size:Lon|
|000025e0| 67 49 6e 74 3b 0d 0a 62 | 65 67 69 6e 0d 0a 20 20 |gInt;..b|egin.. |
|000025f0| 49 66 20 4e 6f 42 75 66 | 66 65 72 69 6e 67 20 74 |If NoBuf|fering t|
|00002600| 68 65 6e 20 46 69 6c 65 | 53 69 7a 65 3a 3d 53 79 |hen File|Size:=Sy|
|00002610| 73 74 65 6d 2e 46 49 6c | 65 53 69 7a 65 28 46 29 |stem.FIl|eSize(F)|
|00002620| 20 65 6c 73 65 0d 0a 20 | 20 20 20 46 69 6c 65 53 | else.. | FileS|
|00002630| 69 7a 65 3a 3d 46 73 69 | 7a 65 20 64 69 76 20 52 |ize:=Fsi|ze div R|
|00002640| 65 63 6f 72 64 53 69 7a | 65 3b 0d 0a 65 6e 64 3b |ecordSiz|e;..end;|
|00002650| 0d 0a 0d 0a 46 75 6e 63 | 74 69 6f 6e 20 42 75 66 |....Func|tion Buf|
|00002660| 66 65 72 46 69 6c 65 2e | 46 69 6c 65 50 6f 73 3a |ferFile.|FilePos:|
|00002670| 4c 6f 6e 67 49 6e 74 3b | 0d 0a 62 65 67 69 6e 0d |LongInt;|..begin.|
|00002680| 0a 20 20 49 66 20 4e 6f | 42 75 66 66 65 72 69 6e |. If No|Bufferin|
|00002690| 67 20 74 68 65 6e 20 46 | 69 6c 65 50 6f 73 3a 3d |g then F|ilePos:=|
|000026a0| 53 79 73 74 65 6d 2e 46 | 69 6c 65 50 6f 73 28 46 |System.F|ilePos(F|
|000026b0| 29 20 65 6c 73 65 0d 0a | 20 20 20 20 46 69 6c 65 |) else..| File|
|000026c0| 50 6f 73 3a 3d 43 75 72 | 72 65 6e 74 50 6f 73 20 |Pos:=Cur|rentPos |
|000026d0| 64 69 76 20 52 65 63 6f | 72 64 53 69 7a 65 3b 0d |div Reco|rdSize;.|
|000026e0| 0a 65 6e 64 3b 0d 0a 0d | 0a 50 72 6f 63 65 64 75 |.end;...|.Procedu|
|000026f0| 72 65 20 42 75 66 66 65 | 72 46 69 6c 65 2e 52 65 |re Buffe|rFile.Re|
|00002700| 61 64 28 56 41 52 20 41 | 3b 20 4e 75 6d 52 65 63 |ad(VAR A|; NumRec|
|00002710| 73 20 3a 20 57 6f 72 64 | 29 3b 0d 0a 56 41 52 0d |s : Word|);..VAR.|
|00002720| 0a 20 20 49 2c 4a 20 20 | 20 20 3a 20 57 6f 72 64 |. I,J | : Word|
|00002730| 3b 0d 0a 20 20 42 75 66 | 50 74 72 20 20 20 3a 20 |;.. Buf|Ptr : |
|00002740| 20 46 69 6c 65 42 75 66 | 66 65 72 50 74 72 3b 0d | FileBuf|ferPtr;.|
|00002750| 0a 20 20 54 61 72 67 65 | 74 50 74 72 20 3a 20 42 |. Targe|tPtr : B|
|00002760| 69 67 42 6c 6f 63 6b 50 | 74 72 3b 0d 0a 20 20 4d |igBlockP|tr;.. M|
|00002770| 6f 72 65 20 20 3a 20 42 | 6f 6f 6c 65 61 6e 3b 0d |ore : B|oolean;.|
|00002780| 0a 20 20 42 61 73 65 42 | 75 66 66 65 72 54 6f 47 |. BaseB|ufferToG|
|00002790| 65 74 20 3a 20 4c 6f 6e | 67 49 6e 74 3b 0d 0a 20 |et : Lon|gInt;.. |
|000027a0| 20 4d 79 50 6f 69 6e 74 | 65 72 20 3a 20 50 6f 69 | MyPoint|er : Poi|
|000027b0| 6e 74 65 72 3b 0d 0a 62 | 65 67 69 6e 0d 0a 20 20 |nter;..b|egin.. |
|000027c0| 49 66 20 4e 6f 42 75 66 | 66 65 72 69 6e 67 20 74 |If NoBuf|fering t|
|000027d0| 68 65 6e 20 42 6c 6f 63 | 6b 52 65 61 64 28 46 2c |hen Bloc|kRead(F,|
|000027e0| 41 2c 4e 75 4d 52 65 63 | 73 29 20 65 6c 73 65 20 |A,NuMRec|s) else |
|000027f0| 62 65 67 69 6e 0d 0a 20 | 20 20 20 4e 75 6d 52 65 |begin.. | NumRe|
|00002800| 63 73 3a 3d 4e 75 6d 52 | 65 63 73 2a 52 65 63 6f |cs:=NumR|ecs*Reco|
|00002810| 72 64 53 69 7a 65 3b 0d | 0a 20 20 20 20 54 61 72 |rdSize;.|. Tar|
|00002820| 67 65 74 50 74 72 3a 3d | 40 41 3b 0d 0a 20 20 20 |getPtr:=|@A;.. |
|00002830| 20 52 65 70 65 61 74 0d | 0a 20 20 20 20 20 0b 01 | Repeat.|. ..|
|00002840| 0a 30 c8 00 00 00 10 01 | 0a 30 4c 01 00 00 26 01 |.0......|.0L...&.|
|00002850| 0a 30 c8 00 00 00 2b 01 | 00 00 2c 00 00 00 4b 01 |.0....+.|..,...K.|
|00002860| 0a 30 54 01 00 00 68 01 | 0a 30 c8 00 00 00 6d 01 |.0T...h.|.0....m.|
|00002870| 0a 30 4c 01 00 00 ba 01 | 0a 30 c8 00 00 00 bf 01 |.0L.....|.0......|
|00002880| 00 00 1c 00 00 00 e4 01 | 00 00 2c 00 00 00 2d 02 |........|..,...-.|
|00002890| 0a 30 4c 01 00 00 87 02 | 0a 30 c8 00 00 00 8c 02 |.0L.....|.0......|
|000028a0| 0a 30 80 01 00 00 03 03 | 0a 30 50 01 00 00 23 00 |.0......|.0P...#.|
|000028b0| 0a 30 c8 00 00 00 28 00 | 0a 30 18 00 00 00 63 00 |.0....(.|.0....c.|
|000028c0| 0a 30 54 01 00 00 bc 01 | 0a 30 c8 00 00 00 c1 01 |.0T.....|.0......|
|000028d0| 0a 30 50 01 00 00 d7 01 | 0a 30 c8 00 00 00 dc 01 |.0P.....|.0......|
|000028e0| 00 00 2c 00 00 00 fc 01 | 0a 30 54 01 00 00 19 02 |..,.....|.0T.....|
|000028f0| 0a 30 c8 00 00 00 1e 02 | 0a 30 5c 01 00 00 38 02 |.0......|.0\...8.|
|00002900| 0a 30 c8 00 00 00 3d 02 | 0a 30 4c 01 00 00 8b 02 |.0....=.|.0L.....|
|00002910| 0a 30 c8 00 00 00 90 02 | 0a 30 80 01 00 00 0c 03 |.0......|.0......|
|00002920| 0a 30 60 01 00 00 17 00 | 0a 30 c8 00 00 00 1c 00 |.0`.....|.0......|
|00002930| 0a 30 54 01 00 00 1a 00 | 0a 30 c8 00 00 00 1f 00 |.0T.....|.0......|
|00002940| 0a 30 14 00 00 00 35 00 | 0a 30 30 00 00 00 15 00 |.0....5.|.00.....|
|00002950| 0a 30 24 01 00 00 24 00 | 0a 30 2c 01 00 00 27 00 |.0$...$.|.0,...'.|
|00002960| 0a 30 c8 00 00 00 2c 00 | 0a 30 28 01 00 00 27 00 |.0....,.|.0(...'.|
|00002970| 0a 30 c8 00 00 00 2c 00 | 0a 30 5c 01 00 00 36 00 |.0....,.|.0\...6.|
|00002980| 0a 30 c8 00 00 00 3b 00 | 00 00 0c 00 00 00 39 00 |.0....;.|......9.|
|00002990| 00 00 28 00 00 00 0d 00 | 0a 30 30 01 00 00 15 00 |..(.....|.00.....|
|000029a0| 0a 30 c8 00 00 00 1a 00 | 00 00 20 00 00 00 34 00 |.0......|.. ...4.|
|000029b0| 00 30 08 00 00 00 04 00 | 00 30 08 00 00 00 04 00 |.0......|.0......|
+--------+-------------------------+-------------------------+--------+--------+